package com.tadpole.music.push;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;


import com.tadpole.music.app.MyApplication;
import com.tadpole.music.bean.PushBean;
import com.tadpole.music.utils.JsonParseUtil;
import com.tadpole.music.view.activity.MainActivity;

import org.json.JSONException;
import org.json.JSONObject;

import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;

/**
 * 自定义接收器
 * <p>
 * 如果不定义这个 Receiver，则：
 * 1) 默认用户会打开主界面
 * 2) 接收不到自定义消息
 * Created by SunYan
 * on 2020/4/17.
 */
public class MyReceiver extends JPushMessageReceiver {
    private static final String TAG = "JIGUANG";

    /**
     * TODO 连接极光服务器
     */
    @Override
    public void onConnected(Context context, boolean b) {
        super.onConnected(context, b);
        Log.e(TAG, "onConnected");
    }

    /**
     * TODO 注册极光时的回调
     */
    @Override
    public void onRegister(Context context, String s) {
        super.onRegister(context, s);
        Log.e(TAG, "onRegister" + s);
    }

    /**
     * TODO 注册以及解除注册别名时回调
     */
    @Override
    public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
        super.onAliasOperatorResult(context, jPushMessage);
        Log.e(TAG, jPushMessage.toString());
    }

    /**
     * TODO 接收到推送下来的通知
     * 可以利用附加字段（notificationMessage.notificationExtras）来区别Notication,指定不同的动作,附加字段是个json字符串
     * 通知（Notification），指在手机的通知栏（状态栏）上会显示的一条通知信息
     */
    @Override
    public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
        super.onNotifyMessageArrived(context, notificationMessage);
        String content = notificationMessage.notificationContent;
        String url = notificationMessage.deeplink;
        String notificationExtras = notificationMessage.notificationExtras;

        Log.d("sunyan","收到"+url);
    }


    /**
     * TODO 打开了通知
     * notificationMessage.notificationExtras(附加字段)的内容处理代码
     * 比如打开新的Activity， 打开一个网页等..
     */
    @Override
    public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
        Log.d("sunyan",notificationMessage.toString());
        String url = notificationMessage.deeplink;
        String pushExtra = notificationMessage.notificationExtras;

        try {
            JSONObject obj = new JSONObject(pushExtra);
            Class c = Class.forName(url);
            if(url.equals("com.tadpole.music.view.activity.MainActivity")){
                MyApplication.getInstance().finishManager.removeAllActivity();
            }

            PushBean pushBean = new PushBean(
                    JsonParseUtil.getInt(obj,"mainIndex"),
                    JsonParseUtil.getInt(obj,"college_id"),
                    JsonParseUtil.getInt(obj,"rank_id"),
                    JsonParseUtil.getStr(obj,"name"),
                    JsonParseUtil.getStr(obj,"flag"),
                    JsonParseUtil.getStr(obj,"title"),
                    JsonParseUtil.getStr(obj,"url")
            );
            Intent intent = new Intent(context,c);
            Bundle bundle = new Bundle();
            bundle.putSerializable("params",pushBean);
            intent.putExtras(bundle);
            context.startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }


    /**
     * TODO 接收到推送下来的自定义消息
     * 自定义消息不是通知，默认不会被SDK展示到通知栏上，极光推送仅负责透传给SDK。其内容和展示形式完全由开发者自己定义。
     * 自定义消息主要用于应用的内部业务逻辑和特殊展示需求
     */
    @Override
    public void onMessage(final Context context, CustomMessage customMessage) {
        super.onMessage(context, customMessage);
        Log.d("sunyan","自定义消息");
    }
}
